package app;

import fabricas.FabricaDeJuego;
import fabricas.FabricaDeLaberintoDesdeXML;
import fabricas.FabricaPacman;
import fantasma.tipos.FantasmaBuscador;
import fantasma.tipos.FantasmaBuscadorTemperamental;
import fantasma.tipos.FantasmaPerezoso;
import fantasma.tipos.FantasmaZonzo;
import interfaces.IFantasma;
import interfaces.ILaberinto;
import laberinto.Bolon;
import utilidades.Constantes;

public class Principal {

	private ILaberinto laberinto;
	private static int nivelActual = 0;
	public Principal(String pathLaberinto, String pathPacman, String pathEstadoLaberinto, String pathEstadoPersonajes){	
		fabricacionDeComponentes(pathLaberinto);
	}

	private void fabricacionDeComponentes(String pathLaberinto) {
		laberinto = FabricaDeLaberintoDesdeXML.crearLaberinto(pathLaberinto);
		FabricaPacman.crearPacmanEscenarioNormal(laberinto/*.getCasillaInicialPacman()*/);
		laberinto.agregarFantasmas(new FantasmaBuscador("con ira"),1);
		laberinto.agregarFantasmas(new FantasmaBuscadorTemperamental("con ira"),2);
		laberinto.agregarFantasmas(new FantasmaZonzo("con ira"),-1);
		laberinto.agregarFantasmas(new FantasmaPerezoso("con ira"),-2);
		for (Bolon bolon : laberinto.ObtenerBolones()){
			for(IFantasma fantasma : laberinto.obtenerFantasmas().obtenerArrayListDeFantasmas()){
				bolon.agregar(fantasma);
			}
		}
	}

	private static void aumentarNivel() {
		if (nivelActual >= Constantes.CANTIDAD_DE_NIVELES-1){
			nivelActual = -1;
		}
		nivelActual++;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String pathLaberinto = Constantes.PATH_XML_LABERINTOS_ESCENARIO_NORMAL+"LaberintoSimple";
		
		Juego juego = FabricaDeJuego.crearJuegoConVistaGraficaYControladoPorTeclado(pathLaberinto + nivelActual);

        while(!juego.finalDelJuego()){
	        juego.iniciarJuego();
	        aumentarNivel();
	        juego = FabricaDeJuego.crearJuegoConVistaGraficaYControladoPorTeclado(pathLaberinto + nivelActual, juego , nivelActual);
        }
	}
}